TOP

Google Переводчик в LibreOffice Calc

Описание

Стандартный функционал LibreOffice Calc не содержит функций для перевода текста на другие языки. Однако любой пользователь может создать такую функцию самостоятельно.

В данной статье мы рассмотрим пользовательскую функцию GoogleTranslate_YouLibreCalc(), которая позволит переводить текст непосредственно в ячейке на любом рабочем листе.

Для перевода текста функция использует сайт "Google Переводчик" и может использоваться в любых формулах как самостоятельно, так и совместно с другими стандартными функциями.



StarBASIC код для функции Google Translate

Чтобы добавить функцию Google Translate , откройте меню Tools - Macros - Edit Macros... , выберите Module1 и скопируйте следующий текст в модуль:

  1. Option VBASupport 1  
  2.   
  3. Function GoogleTranslate_YouLibreCalc(TextToTranslate As String, SrcLang As String, TrgLang As String)  
  4.   ' moonexcel.com.ua   
  5.   Dim FCalc      As Object  
  6.   Dim WebsiteURL As String    
  7.   Dim XMLHTTP    As Object  
  8.   Dim oHTML      As Object  
  9.   Dim HTMLDoc    As HTMLDocument  
  10.   Dim ObjClass   As Object  
  11.       
  12.   FCalc = CreateUnoService("com.sun.star.sheet.FunctionAccess")   
  13.   TextToTranslate =  FCalc.callFunction("ENCODEURL", Array(TextToTranslate))  
  14.     
  15.   SrcLang = LCase(SrcLang)  
  16.   TrgLang = LCase(TrgLang)  
  17.     
  18.   IF SrcLang = "zh-cn" Then SrcLang = "zh-CN"  
  19.   IF SrcLang = "zh-tw" Then SrcLang = "zh-TW"  
  20.     
  21.   IF TrgLang = "zh-cn" Then TrgLang = "zh-CN"  
  22.   IF TrgLang = "zh-tw" Then TrgLang = "zh-TW"   
  23.       
  24.   WebsiteURL = "https://translate.google.com/m?sl=" + SrcLang + "&tl=" + TrgLang + "&hl=en&q=" + TextToTranslate  
  25.       
  26.   ' Выполняем API обращение к веб-серверу с помощью AJAX-запроса   
  27.   Set XMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")  
  28.    
  29.   XMLHTTP.Open "GET", WebsiteURL, False    
  30.   XMLHTTP.Send  
  31.    
  32.   ' Создаем HTML документ, используя текст ответа AJAX-запроса   
  33.   Set oHTML = CreateObject("HTMLFile")  
  34.   With oHTML  
  35.         .Open  
  36.         .Write XMLHTTP.responseText  
  37.         .Close  
  38.   End With  
  39.     
  40.   ' Конвертируем HTML текст в объектную модель с помощью библиотеки веб-элементов Microsoft HTML Object Library   
  41.   Set HTMLDoc = oHTML    
  42.     
  43.   Set ObjClass = HTMLDoc.getElementsByClassName("result-container").Item(0)  
  44.   If Not ObjClass Is Nothing Then  
  45.     GoogleTranslate_YouLibreCalc = ObjClass.innerText      
  46.   End If   
  47.    
  48.   ' Освобождаем память   
  49.   Set ObjClass = Nothing  
  50.   Set oHTML    = Nothing  
  51.   Set XMLHTTP  = Nothing    
  52. End Function  

Далее, закройте Macro Editor и вернитесь на рабочий лист LibreOffice Calc , выберите любую клетку и воспользуйтесь нашей новой функцией GoogleTranslate_YouLibreCalc() .

Использование расширения

Вы также можете воспользоваться функцией GOOGLETRANSLATE() установив бесплатное расширение YouLibreCalc.oxt или его полнофункциональную версию YLC_Utilities.oxt .

После этого данная функция будет доступна во всех файлах, которые будут открыты в LibreOffice Calc.